<?php
/**
 * User: LRZ
 * Date: 2020/1/17
 * Time: 11:00
 */

/**
 *  922.按奇偶排序数组 II
 *
 *  标签：排序、数组
 *
 *  给定一个非负整数数组 A， A 中一半整数是奇数，一半整数是偶数。
 *  对数组进行排序，以便当 A[i] 为奇数时，i 也是奇数；当 A[i] 为偶数时， i 也是偶数。
 *  你可以返回任何满足上述条件的数组作为答案。
 *
 *  示例：
 *      输入：[4,2,5,7]
 *      输出：[4,5,2,7]
 *      解释：[4,7,2,5]，[2,5,4,7]，[2,7,4,5] 也会被接受。
 *   
 *  提示：
 *      2 <= A.length <= 20000
 *      A.length % 2 == 0
 *      0 <= A[i] <= 1000
 *
 *  来源：力扣（LeetCode）
 *  链接：https://leetcode-cn.com/problems/sort-array-by-parity-ii
 *  著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

$start = microtime(true);

$A   = [3, 4, 3, 2];
$res = sortArrayByParityII($A);

$end = microtime(true);
print_r($res);
printf(' total run: %.2f s<br>' . 'memory usage: %.2f M<br> ', $end - $start, memory_get_usage() / 1024 / 1024);

function sortArrayByParityII($A)
{
    $p0  = 0;
    $p1  = 1;
    $res = [];
    foreach ($A as $k => $v) {
        if ($v % 2 === 0) {
            $res[$p0] = $v;
            $p0       += 2;
        }
        if ($v % 2 === 1) {
            $res[$p1] = $v;
            $p1       += 2;
        }
    }
    ksort($res);
    return $res;
}